The present invention relates generally to the field of software development, and more particularly to testing and debugging.
As software executes, it receives input and produces output. Depending on the software in question, the quantity, source, and target of input and output data varies significantly, but can be generalized. Input includes commands and/or data: (i) entered by users; (ii) provided by other running software; and/or (iii) retrieved from files. The output from software is essentially the input with certain calculations applied. In addition to simply providing an answer as output data, many software products produce output data, sometimes called trace entries, that can be used for diagnostic purposes if the software fails.
As software executes, it produces trace entries that are collated in a trace dataset that describes, in chronological order: (i) which programs, modules, and/or methods were executed; (ii) what data was provided to these components; and/or (iii) the corresponding results. In the event of a software error, the trace dataset is provided to the software vendor's support team for analysis to understand what the software was doing when the problem occurred.
The volume and scope of the trace dataset produced by a software product is often customizable. In production environments, it is common for software to be run with minimal trace data collection enabled because the creation of trace entries reduces the efficiency of the software product. In many cases no trace entries are produced at all.